#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(_WINDOWS) || defined(_MSC_VER)
#	define AV_WINDOWS			1
#elif defined(__linux__) || defined(__unix__)
#	define AV_LINUX				1
#elif defined(__APPLE__) || defined( __APPLE_CC__)
#	define AV_APPLE				1
#	include "TargetConditionals.h"
#	if defined(__MACOSX__)
#		define AV_MACOSX		1
#	elif defined(TARGET_OS_IPHONE) || defined(TARGET_IPHONE_SIMULATOR)
#		define AV_IOS			1
#	endif
#elif defined(_ANDROID)
#	define AV_ANDROID			1
#endif

#if !defined(AV_WINDOWS)
#	define AV_WINDOWS			0
#elif !defined(AV_LINUX)
#	define AV_LINUX				0
#elif !defined(AV_APPLE)
#	define AV_APPLE				0
#elif !defined(AV_MACOSX)
#	define AV_MACOSX			0
#elif !defined(AV_IOS)
#	define AV_IOS				0
#elif !defined(AV_ANDROID)
#	define AV_ANDROID			0
#endif

#if (AV_WINDOWS + AV_LINUX + AV_APPLE + AV_MACOSX + AV_IOS + AV_ANDROID) != 1
#	error Unknown platform, no support!
#endif

#if defined(__GNUC__)
#	define AV_COMPILER_GNUC		1 // GNU Compiler
#	define AV_COMP_VER			(((__GNUC__)*100) + (__GNUC_MINOR__ * 10) +  __GNUC_PATCHLEVEL__)
#elif defined(_MSC_VER)
#	define AV_COMPILER_VC		1 // VisualC++
#	define AV_COMP_VER			_MSC_VER
#elif defined (__INTEL_COMPILER)
#	define AV_COMPILER_INTEL	1 // Intel
#	define AV_COMP_VER			__INTEL_COMPILER
#elif defined ( __clang__ )
#	define AV_COMPILER_CLANG	1 // Clang
#	define AV_COMP_VER			__clang_major__
#endif

#if !defined(AV_COMPILER_GNUC)
#	define AV_COMPILER_GNUC		0
#elif !defined(AV_COMPILER_VC)
#	define AV_COMPILER_VC		0
#elif !defined(AV_COMPILER_INTEL)
#	define AV_COMPILER_INTEL	0
#elif !defined(AV_COMPILER_CLANG)
#	define AV_COMPILER_CLANG	0
#endif

#if (AV_COMPILER_GNUC + AV_COMPILER_VC + AV_COMPILER_INTEL + AV_COMPILER_CLANG) != 1
#	error Unknown compiler, no support!
#endif

#if defined(_DEBUG) || defined(DEBUG)
#	define AV_DEBUG_MODE		1
#else
#	define AV_DEBUG_MODE		0
#endif

#if AV_COMPILER_VC
// Secure versions aren't multiplatform, so we won't be using them
#	define _CRT_SECURE_NO_WARNINGS
#endif